草庐IT

haskell - 新线 haskell

全部标签

java - 创建一个新线程是否有刷新缓存的副作用?

我想知道在Java中创建新线程是否会触发缓存刷新。假设我按以下顺序做这样的事情:线程运行并设置变量X。线程创建一个新线程。新线程访问X。我的问题是:新线程是否在创建时或开始执行时保证看到旧线程在步骤1中对X所做的更新?我明白,如果旧线程将来更改了X的值,则不能保证新线程会看到这些更改。没关系。我只想知道新线程在启动时是否会看到正确的值而不需要显式同步。当我最初决定研究这个主题时,我以为简单的谷歌搜索会立即揭示答案,但出于某种原因,我找不到任何解决这个问题的结果。 最佳答案 是的,是的。在Java中,有一种“先于发生”的关系,它指定了

Java:从同步块(synchronized block)启动新线程时会发生什么?

这里的第一个问题:这是我不知道的Java中一个非常简短但基本的东西......在下面的例子中,run()方法是否以某种方式执行了somemethod()获得的锁?publicsynchronizedvoidsomemethod(){Threadt=newThread(newRunnable(){voidrun(){... 最佳答案 没有。run()在其自己的上下文中同步启动。它不持有任何锁。如果是这样,您要么会遇到死锁,要么会违反规定在任何给定时间只有一个线程可以持有对象锁的规范。如果run()对同一个对象再次调用somemetho

java - 在里面调用新线程是构造函数

像这里那样创建一个线程并在类的构造函数中调用它的start()方法是否正确?publicclassServerimplementsRunnable{privateServerSocketserver;publicServer(intport){try{//Opensanewserverserver=newServerSocket(port);}catch(IOExceptionioe){ioe.printStackTrace();}newThread(this,"Server").start();}@Overridepublicvoidrun(){}} 最佳

Java 消息服务和 Haskell

我想知道在Haskell程序中是否有任何方法可以从某些提供程序(如ActiveMQ或WebMQ)接收JMS消息。我已经看到有一个用于ActiveMQ的Haskell客户端,但它似乎没有维护。有没有人有这方面的经验或任何建议? 最佳答案 看起来我们目前拥有的主要库是:amqpzero-mq如果这些不合适,您可以将它们用作开发您自己的库的起点。 关于Java消息服务和Haskell,我们在StackOverflow上找到一个类似的问题: https://stack

java - 如何通过 Java 运行我的 haskell 函数

假设我在ma​​th.hs中有一个haskell函数add如何通过Java程序运行add函数并将输出存储为变量?可能像下面这样:publicintrunHaskell(StringhaskellFile){intoutput;//runaddfunctionfromfile'math.hs'andstoreresulttooutputreturnoutput;}(如果需要,我还可以访问目标文件:math.o和解释器文件math.hi以及可执行文件main.exe.) 最佳答案 简单(但笨拙)的方法:Runtime.exec()然后就

java - 在新线程问题中使用 spring 发送电子邮件

我正在开发的应用程序的功能之一是每次用户在我们的系统中注册他的发票时都会发送一封电子邮件。从Java应用程序发送电子邮件很容易,尤其是在使用Spring框架时。我使用Spring框架中的JavaMailSenderImpl和SimpleMailMessage,它工作正常。但我需要在新线程中发送电子邮件,以便与SMTP服务器的通信不会减慢其余应用进程。问题是当我调用MailSender.send()新线程中的方法,不发送电子邮件消息,这与在同一线程中发送时相反。我尝试使用spring的@Async注释、springExecutor和普通的旧java.lang.Thread但它不起作用。j

java - 使用 Haskell 将函数注入(inject) Java .class 文件

我使用Haskell编写了一个Java字节码解析器,它工作得很好。然而,下一步让我完全难住了。我的Haskell程序需要修改.class文件,以便Java程序在执行时打印:“在执行方法之前输入[方法名称]”,并且“在执行方法后退出[此处的方法名称]”。我所知道的是我们需要通过调用System.out.println来附加常量池和方法表,但我觉得我仍然遗漏了一些东西。解决这个问题的最佳方法是什么?你怎么知道如何在字节码中调用System.out.println?如何存储带有方法名称的字符串,以便稍后作为System.out.println的参数调用? 最佳答案

java - Haskell 数据类型到 Java(OO)

我正在尝试将一个简单的Haskell数据类型和一个函数转换为OO。但是我很困惑..具有以下用于算术计算的Haskell类型:dataExpr=LitInt|AddExprExpr|derivingShow--TurntheexprtoanicestringshowExpr::Expr->StringshowExpr(Litn)=shownshowExpr(Adde1e2)="("++showExpre1++"+"++showExpre2++")"现在我正在尝试转换..publicinterfaceExpr{StringshowExpr(Stringn);}//Basecasepubli

java.nio 与每个套接字的新线程

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我正在开发一个1对多服务器-客户端应用程序,这是一个小项目。由于套接字IO是阻塞的。我正在为此寻找解决方案。谁能告诉我这两种解决方案的优缺点?使用java.nio为每个连接的客户端新建一个线程。谢谢

java - Java 8 中 Haskell 的 foldr 等价物

这个问题在这里已经有了答案:HowtoreducegivenlistbyusingLambdaexpression.reduce()method(2个答案)关闭7年前。我们习惯了foldr在Haskell中你使用(例如,使用Java语法)aList并返回所需的任何类型(、List等)。例如在Haskell中,这个函数接受List并返回另一个List并用作累加器aList(只是一个例子,函数的目标无关紧要):evens::[Integer]->[Integer]evens=foldr(\xacc->ifmodx2==0thenx:accelseacc)[]现在Java8已经推出并具有函数